home *** CD-ROM | disk | FTP | other *** search
- /* TapeUtil.c */
- /* 14 Jan 1996 20:29:06 */
-
- #ifndef BACKUP_INCLUDE
- #include "IncludeAll.c"
- #endif
- #include "Backup.h"
- #include "Backup_proto.h"
- #include "BackupStrings.h"
-
-
- static BOOL BeginTapeInfo(struct Window *Parent, const char *InfoText, ...);
-
-
- /* aus Backup.c */
- extern struct TextFont *ScreenFont;
- extern struct DiskFlags __far *Disks;
-
- /* aus FileSelect.c */
- extern struct Window *MenuWin; /* an diesem Window hängt das Menu */
- extern struct Window *FSwin; /* File Select Window */
-
- /* aus Backup_Window.c */
- extern struct DrawInfo *myDrawInfo;
-
-
- static const TIBorder = 50;
- static struct Window *TIWindow;
-
-
- static BOOL BeginTapeInfo(struct Window *Parent, const char *InfoText, ...)
- {
- struct NewWindow NewTIWindow;
- struct TextExtent TiExt;
- size_t Length;
- char Line[512];
- struct RastPort rpCopy;
- va_list args;
-
- va_start(args, InfoText);
-
- ASSERT_VALID(Parent);
- ASSERT_VALID(InfoText);
-
- vsprintf(Line, InfoText, args);
-
- Length = strlen(Line);
-
- rpCopy = *Parent->RPort;
- if (ScreenFont)
- SetFont(&rpCopy, ScreenFont);
-
- TextExtent(&rpCopy, (STRPTR) Line, Length, &TiExt);
-
- NewTIWindow.Width = TIBorder + TiExt.te_Width + Parent->BorderLeft + Parent->BorderRight;
- NewTIWindow.Height = TIBorder + TiExt.te_Height + Parent->BorderTop + Parent->BorderBottom;
-
- CenterWindow(Parent, &NewTIWindow);
-
- TIWindow = OpenWindowTags(NULL,
- WA_Left, NewTIWindow.LeftEdge,
- WA_Top, NewTIWindow.TopEdge,
- WA_Width, NewTIWindow.Width,
- WA_Height, NewTIWindow.Height,
- WA_AutoAdjust, TRUE,
- WA_Flags, WFLG_SMART_REFRESH | WFLG_NOCAREREFRESH
- | WFLG_DRAGBAR | WFLG_DEPTHGADGET | WFLG_ACTIVATE,
- WA_IDCMP, 0l,
- WA_Title, GetString(MSG_TAPEUTILWINDOW_TITLE),
- WA_PubScreen, Parent->WScreen,
- WA_NewLookMenus, TRUE,
- TAG_END);
- if (NULL == TIWindow)
- {
- alarm("%s: %s", __FUNC__, GetString(MSG_CANNOT_OPEN_WINDOW), "TIWindow");
- return FALSE;
- }
-
- if (ScreenFont)
- SetFont(TIWindow->RPort, ScreenFont);
- else
- SetFont(TIWindow->RPort, Parent->RPort->Font);
-
- Move(TIWindow->RPort, TIWindow->BorderLeft + (TIWindow->Width - TiExt.te_Width)/2,
- TIWindow->BorderTop +
- (TIWindow->Height - TIWindow->BorderTop - TIWindow->BorderBottom
- - TiExt.te_Height) / 2 + TiExt.te_Height );
- SetDrMd(TIWindow->RPort, JAM1);
- SetAPen(TIWindow->RPort, myDrawInfo->dri_Pens[TEXTPEN]);
-
- Text(TIWindow->RPort, (STRPTR) Line, Length);
-
- va_end(args);
-
- return TRUE;
- }
-
-
- void CleanupTapeInfo(void)
- {
- if (TIWindow)
- {
- SafeCloseWindow(&TIWindow);
-
- if (FSwin)
- WindowBusy(FSwin, FALSE);
- }
- }
-
-
- void TapeFunction(short Unit, enum TapeFunc Function)
- {
- short Error = 0;
- long ErrorMsg;
-
- if (Unit == NO_DRIVE || Disks[Unit].TapeReq == NULL)
- return;
-
- if (Function == TF_Erase &&
- yesno(MenuWin, GetString(MSG_ERASETAPE_Q), Disks[Unit].DOSName)
- != *GetString(MSG_YES_SHORT))
- {
- return;
- }
-
- if (FSwin)
- WindowBusy(FSwin, TRUE);
-
- Disks[Unit].diskreq = OpenDisk(&Disks[Unit], TRUE);
- if (Disks[Unit].diskreq)
- {
- Disks[Unit].TapeReq->Req = Disks[Unit].diskreq;
-
- TapeInitProperties(Disks[Unit].TapeReq);
- TapeInitDrive(Disks[Unit].TapeReq, &Disks[Unit]);
-
- switch (Function)
- {
- case TF_Rewind:
- BeginTapeInfo(MenuWin, GetString(MSG_REWINDING_TAPE), Disks[Unit].DOSName);
- Error = TapeRewind(Disks[Unit].TapeReq);
- ErrorMsg = MSG_TAPEREWIND_FAIL;
- break;
- case TF_Retension:
- BeginTapeInfo(MenuWin, GetString(MSG_RETENSIONING_TAPE), Disks[Unit].DOSName);
- Error = TapeRetension(Disks[Unit].TapeReq);
- ErrorMsg = MSG_TAPERETENSION_FAIL;
- break;
- case TF_Erase:
- BeginTapeInfo(MenuWin, GetString(MSG_ERASING_TAPE), Disks[Unit].DOSName);
- Error = TapeErase(Disks[Unit].TapeReq);
- ErrorMsg = MSG_TAPEERASE_FAIL;
- break;
- case TF_Unload:
- BeginTapeInfo(MenuWin, GetString(MSG_UNLOADING_TAPE), Disks[Unit].DOSName);
- Error = TapeTryLoadUnLoad(Disks[Unit].TapeReq, FALSE);
- ErrorMsg = MSG_TAPEUNLOAD_FAIL;
- break;
- case TF_Load:
- BeginTapeInfo(MenuWin, GetString(MSG_LOADING_TAPE), Disks[Unit].DOSName);
- Error = TapeTryLoadUnLoad(Disks[Unit].TapeReq, TRUE);
- ErrorMsg = MSG_TAPELOAD_FAIL;
- break;
- }
-
- if (Error)
- TapeError(Disks[Unit].TapeReq, &Disks[Unit], GetString(ErrorMsg), Error, FALSE, FALSE);
-
- CloseDisk(&Disks[Unit], CDP_KeepTape);
- CleanUpDisk(&Disks[Unit], 0);
- }
-
- CleanupTapeInfo();
- }
-
-
-